/*聊天群服务器主程序，
负责聊天群实体、绑定聊天群业务和UDP网络
*/
#include <memory>
#include <binders.h>

#include "UdpServer.hpp"
#include "Route.hpp"

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        LOG(FATAL, "too few arguments in cmd\n");
        exit(1);
    }
    uint16_t clientPort = std::stoi(argv[1]);

    Route route;
    /*绑定函数这里有两个问题：
    1.函数类型是通using改名的
    2.函数地址是通过bind绑定的
    所以绑定的函数参数必须和定义的函数类型相同*/
    hander_message_t rt = std::bind(&Route::Forward, &route, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
    std::unique_ptr<UdpServer> usvr = std::make_unique<UdpServer>(rt,clientPort); // C++14

    usvr->Init();
    usvr->Start();
}